package org.ykhl.mq.commons;


/**
 * 用于在MQ中传输消息的基础消息体接口。
 * 
 * @author Zhang Kefei
 *
 */
public interface BaseMessage {
	enum MessageType {REQUEST, RESPONSE, PUSH};

	BaseMessage newCopy() throws CloneNotSupportedException;

	MessageType getMessageType();
	void setMessageType(MessageType messageType);

	String getTopic();
	void setTopic(String topic);

	String getHospitalId();
	void setHospitalId(String hospitalId);
	String getHospitalName();
	void setHospitalName(String hospitalName);

	String getAppSecretKey();
	void setAppSecretKey(String appSecretKey);

	String getExtendSet();
	void setExtendSet(String extendSet);

	/**
	 * 获取数据类型, 用于医院返回请求响应, 或发送推送消息时指明数据类型
	 *
	 * @return 数据类型
     */
	String getDataType();

	/**
	 * 设置数据类型, 用于医院返回请求响应, 或发送推送消息时指明数据类型
	 *
	 * @param dataType
     */
	void setDataType(String dataType);

	String getDataVersion();
	void setDataVersion(String version);

	String getAppServerId();
	void setAppServerId(String appServerId);

	String getAppServerName();
	void setAppServerName(String appServerName);
	
	String getAppId();
	void setAppId(String appId);
	
	String getMessageBody();
	void setMessageBody(String messageBody);

	String getMessageBodyMd5();
	void setMessageBodyMd5(String messageBodyMd5);

	String getFlowId();
	void setFlowId(String flowId);

	String getTimestamp();
	void setTimestamp(String timestamp);

	String getRequestId();
	void setRequestId(String requestId);

	/**
	 * 获取服务ID, 用于AppServer发送查询请求时使用
	 *
	 * @return 服务ID
     */
	String getFid();

	/**
	 * 设置服务ID, 用于AppServer发送查询请求时使用
	 *
	 * @param fid
     */
	void setFid(String fid);

	String getDeviceSign();
	void setDeviceSign(String deviceSign);
}
